//
// Created by 24087 on 2025/3/4.
//
#include <adc.h>
#include <Potentiometer.h>

static volatile uint16_t _RP_values[4] = {};

void Potentiometer_Init()
{
    HAL_ADCEx_Calibration_Start(&hadc1); //校准电位
    HAL_ADC_Start_DMA(&hadc1, _RP_values, sizeof(_RP_values) / sizeof(uint16_t)); //启动ADC并将数据放入values中
    HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
}


RP_values Potentiometer_GetValues()
{
    /*值访问函数会在程序用被调用，因此将赋值操作放在其中，这样可以保证静态变量被有效复制和数据及时更新*/
    const RP_values values = {
        .RP1 = _RP_values[0],
        .RP2 = _RP_values[1],
        .RP3 = _RP_values[2],
        .RP4 = _RP_values[3]
    };

    /*返回被封装数据，简化操作难度*/
    return values;
}


